#include <stdio.h>
#include <string.h>
#define STU_NUM 2//学生数量
//出生年月结构体
typedef struct birth
{
   int year;
   int month;
   int day;

}BIRTH;
//学生信息结构体
typedef struct stu
{
   char name[20];//姓名
    BIRTH birthday;//生日
    float score;//成绩
}STU;
//输入学生信息
void inputdata(STU *P)
{
    int i;
    for(i=0;i<STU_NUM;i++)
    {
        printf("姓名：");
        scanf("%s",(P+i)->name);  //&(*(p+i))  
        getchar();
        printf("年-月-日：");
        scanf("%d-%d-%d",&(P+i)->birthday.year,&(P+i)->birthday.month,&(P+i)->birthday.day);
        getchar();
        printf("成绩：");
        scanf("%f",&(P+i)->score);
        getchar();
    }
}
//查询学生信息  //通过传过来的学生姓名查询成绩 并将数据返回
STU find_score(STU *P,char *p_name)//p_name指向了 传过来的name的首地址
{
    STU temp;//保存找到的学生信息数据
    int i;
    for(i=0;i<STU_NUM;i++)
    {
        //查找人名
        if(strcmp((P+i)->name,p_name)==0)//匹配
        {
            //不找了  先保存信息
            temp=*(P+i);
            break;
        }
    }
    if (i==STU_NUM)
    {
        printf("查无此人\n");
        memset(&temp,0,sizeof(temp));//将当前这个temp清空为0
    }
    
    return temp;
}
//输出学生信息
void Show_stuData(STU *P)
{
    //要求输出传过来的学生的所有信息  （姓名 出生年月  以及成绩）
    printf("姓名：%s \n 年-月-日：%d-%d-%d\n成绩：%.2f\n",P->name,P->birthday.year,P->birthday.month,P->birthday.day,P->score);
}
int main(int argc, char const *argv[])
{
    /* code */
    STU NUM[STU_NUM]={0};//学生结构体数组  存储2个学生信息
    char name[20]={'\0'};
    STU res;//保存查询的学生成绩信息返回
    //1.录入信息
    inputdata(NUM);//录入学生信息
    // Show_stuData(&NUM[0]);//通过输出测试录入信息  
    // Show_stuData(&NUM[1]);
    //2.输入查询信息 并查询 和接收返回的数据
    printf("请输入查询者姓名");
    scanf("%s",name);
    res=find_score(NUM,name);//name是一个字符数组 存的是一个字符串常量  name就是整个字符数组的首地址
    //3.输出查询的结果
    if(strlen(res.name)!=0)//只有找到了才输出信息
    Show_stuData(&res);

    return 0;
}

